//有缘蜂鸣器驱动

#include "../App_Main.h"
#include "Buzzer.h"


typedef struct
{
    uint8_t count; //响的次数
    uint8_t persist; //响的持续时间(ms)
    uint16_t interval; //响的间隔时间(ms)
}_buzzer_param;
_buzzer_param buzzer_param;


//配置蜂鸣器使用情况
void Buzzer_config(void)
{
    if(buzzer_param.count == 0) buzzer_param.count = 3;
    if(buzzer_param.persist == 0) buzzer_param.persist = 40;
    if(buzzer_param.interval == 0) buzzer_param.interval = 200;
}
//肉探针蜂鸣器专用
void Buzzer_Probe_config(void)
{
    if(buzzer_param.count == 0) buzzer_param.count = 1;
    if(buzzer_param.persist == 0) buzzer_param.persist = 40;
    if(buzzer_param.interval == 0) buzzer_param.interval = 200;
}

void Buzzer_Stop(void)
{
    buzzer_param.count = 0;
    buzzer_param.persist = 0;
    buzzer_param.interval = 0;
}

//tick 10ms
//本质是脉宽控制
void Buzzer_clock(void)
{
    if(buzzer_param.count > 0)
    {
        if (buzzer_param.persist > 0)
        { //高电平持续时间
            buzzer_param.persist--;
            Buzzer_sound;
        }
        else if (buzzer_param.interval > 0)
        { //低电平持续时间
            buzzer_param.interval--;
            Buzzer_not_sound;
        }
        if((buzzer_param.persist == 0) && (buzzer_param.interval == 0))
        { //重装载蜂鸣器配置值
            Buzzer_config();
            buzzer_param.count--;
            Buzzer_not_sound;
        }
    }
}
